using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Nekonya.Dicts;
using Nekonya.Dicts.Model;
using TinaX;
using TinaX.UIKit;
using TinaX.XComponent;
using UnityEngine;
using UnityEngine.UI;

namespace Nekonya.UI
{
    public class ItemInfoScreen : XUIBehaviour
    {
        [Binding("img_icon")]
        public Image Img_Icon { get; set; }
        [Binding("txt_name")]
        public Text Txt_Name { get; set; }

        [Binding("txt_desc")]
        public Text Txt_Description { get; set; }

        [Binding("txt_num_v")]
        public Text Txt_Num { get; set; }

        [Inject]
        public DictFactory DictFactory { get; set; }

        private ItemDict m_ItemDict;

        public override void Awake()
        {
            m_ItemDict = DictFactory.GetDict<ItemDict>();

            Img_Icon.sprite = null;
            Txt_Name.text = string.Empty;
            Txt_Description.text = string.Empty;
        }

        public override void OnMessage(string msgName, params object[] msgParams)
        {
            if (msgName.Equals(UIEventConst.OpenUI))
            {
                var tpl = (ItemModel)msgParams[0];

                //名字
                Txt_Name.text = m_ItemDict.GetName(tpl);

                //描述
                Txt_Description.text = m_ItemDict.GetDescription(tpl);

                //数量
                Txt_Num.text = ((uint)msgParams[1]).ToString();
                //图标
                var icon_path = $"Assets/Arts/UI/Images/items/{tpl.Icon}.png"; //这里是为了更加容易理解逻辑才把拼接图标加载路径的代码写在UI逻辑里，实际上不应该这么干。
                Img_Icon.SetSpritePath(icon_path); //案例使用的框架扩展了Unity的Image，可以根据图片文件的路径来实时的显示图片。对于没有框架的白板Unity，可以先粗略的使用Resources类来加载图片资产。

                //品质，
                //我们把名字的文字颜色换换来代表品质。  这里照理说项目应该由美术统一几个颜色，并定义在什么常量里，
                //对于学技术而言我们只要知道有这么个事就行了，下面就瞎写几个颜色了
                switch (tpl.Quality)
                {
                    default:
                        Txt_Name.color = Color.black;
                        break;
                    case 1:
                        Txt_Name.color = Color.cyan;
                        break;
                    case 2:
                        Txt_Name.color = Color.blue;
                        break;
                }
            }
        }


    }
}
